package com.dupt.system.service;

import java.util.List;
import com.dupt.system.domain.MaterialSerial;
import com.dupt.system.domain.vo.MaterialSerialVo;

/**
 * 物料序列号Service接口
 * 
 * @author zhuanyu.sun
 * @date 2025-08-21
 */
public interface IMaterialSerialService
{
    /**
     * 查询物料序列号
     * 
     * @param materialSerialId 物料序列号主键
     * @return 物料序列号
     */
    public MaterialSerial selectMaterialSerialByMaterialSerialId(Long materialSerialId);


    /**
     * 批量查询物料序列号
     *
     * @param materialSerialIds 物料序列号主键
     * @return 物料序列号
     */
    public List<MaterialSerial> selectMaterialSerialByMaterialSerialIds(Long[] materialSerialIds);

    /**
     * 根据序列号查询物料序列号信息
     *
     * @param serialNo 物料序列号
     * @return 物料序列号
     */
    public List<MaterialSerial> selectMaterialSerialBySerialNo(String serialNo);

    /**
     * 查询物料序列号列表
     * 
     * @param materialSerial 物料序列号
     * @return 物料序列号集合
     */
    public List<MaterialSerial> selectMaterialSerialList(MaterialSerial materialSerial);

    /**
     * 新增物料序列号
     * 
     * @param materialSerial 物料序列号
     * @return 结果
     */
    public int insertMaterialSerial(MaterialSerial materialSerial);

    /**
     * 修改物料序列号
     * 
     * @param materialSerial 物料序列号
     * @return 结果
     */
    public int updateMaterialSerial(MaterialSerial materialSerial);

    /**
     * 批量修改物料序列号
     *
     * @param materialSerialList 物料序列号
     * @return 结果
     */
    public int batchUpdateMaterialSerial(List<MaterialSerial> materialSerialList);

    /**
     * 批量删除物料序列号
     * 
     * @param materialSerialIds 需要删除的物料序列号主键集合
     * @return 结果
     */
    public int deleteMaterialSerialByMaterialSerialIds(Long[] materialSerialIds);

    /**
     * 删除物料序列号信息
     * 
     * @param materialSerialId 物料序列号主键
     * @return 结果
     */
    public int deleteMaterialSerialByMaterialSerialId(Long materialSerialId);

    /**
     * 查询物料序列号列表
     *
     * @param materialCollectId 物料收集ID
     * @return 物料序列号集合
     */
    public List<MaterialSerialVo> receiveSearchMaterialByMaterialCollectId(Long materialCollectId);

    /**
     * 查询物料序列号列表
     *
     * @param assembleMaterialId 组装用料ID
     * @return 物料序列号集合
     */
    public List<MaterialSerialVo> sendBackSearchMaterialSerialByAssembleMaterialId(Long assembleMaterialId);
}
